package com.efast.dmom.mgmt.controller.les.pda;

import com.efast.cafe.framework.bean.ResultBean;
import com.efast.cafe.framework.exception.ServiceException;
import com.efast.dmom.mgmt.bean.les.pda.PdaTwInvPacktranDetail;
import com.efast.dmom.mgmt.entity.les.TwInvPacktranDetail;
import com.efast.dmom.mgmt.service.les.TwInvPacktranDetailService;
import com.efast.dmom.mgmt.service.les.TwInvPacktranHeaderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;

/**
 * 7.5.4.3获取补货任务
 *
 * 补货任务需求 TW_INV_PAL_MRI
 *
 * 补货任务头表 TW_INV_PACKTRAN_HEADER
 *
 * 补货任务明细TW_INV_PACKTRAN_DETAIL
 *
 * 前置条件：
 * 
 * 1)不会指定到源库位，系统需要分配出库库位的补货；现有配置举例-窗口时间-按库存消耗
 * 
 * 2)分配完成，生成拣货任务后（拣货完成后 才能获取到对应的补货任务 ）
 * 
 * @author Administrator
 *
 */
@Controller
@RequestMapping(value = "/pdaTwInvPacktranHeader")
@Api(description = "pda-->拉动-->7.5.4.3获取补货任务-PDA")
public class PdaTwInvPacktranHeaderController {

	private final TwInvPacktranHeaderService twInvPacktranHeaderService;
	private final TwInvPacktranDetailService twInvPacktranDetailService;

	@Autowired
	public PdaTwInvPacktranHeaderController(TwInvPacktranHeaderService twInvPacktranHeaderService, TwInvPacktranDetailService twInvPacktranDetailService) {
		this.twInvPacktranHeaderService = twInvPacktranHeaderService;
		this.twInvPacktranDetailService = twInvPacktranDetailService;
	}

	@ApiOperation(value = "【补货完成】", notes = "请求参数：")
	@RequestMapping(value = "/replenishmentFinish", method = RequestMethod.POST)
	public @ResponseBody
	ResultBean replenishmentFinish(@RequestBody TwInvPacktranDetail twInvPacktranDetail) {
		ResultBean result = new ResultBean(true, "'");
		twInvPacktranDetailService.replenishmentFinish(twInvPacktranDetail);
		return result;
	}

	/**
	 * job在执行的时候，会产生补货任务，有些补货任务制定了源库位，则不需要分配库位的。有些补货任务没有指定源库位，则需要分配库位，
	 *
	 * 这个页面就是查询需要分配源库位的那种情况。补货管理页面先分配库位，同时产生拣货任务和补货任务是一一对应关系。只是当这条拣货任务拣货完成的时候
	 *
	 * 在补货任务执行分配的时候：分配表TW_ACT_ALLOC_LOT_D 会记录 拣货任务表TW_OUTB_TASK_DETAIL 补货明细表TW_INV_PACKTRAN_HEADER之间的关系
	 *
	 * 这个时候才能查询到这个补货任务。
	 *
	 * 1个补货大任务 会对应1个拣货大任务。
	 * 
	 * @param pdaTwInvPacktranDetail
	 *            pdaTwInvPacktranDetail
	 * @return ResultBean
	 */
	@ApiOperation(value = "【查询补货任务（没有指定源库位的，需要分配的那种情况）】", notes = "请求参数：")
	@RequestMapping(value = "/queryInvPacktran", method = RequestMethod.POST)
	public @ResponseBody ResultBean queryInvPacktran(@RequestBody PdaTwInvPacktranDetail pdaTwInvPacktranDetail) {
		ResultBean result = new ResultBean(true, "'");
		List<TwInvPacktranDetail> twInvPacktranDetails = twInvPacktranHeaderService.queryInvPacktran(
				pdaTwInvPacktranDetail);
		if (twInvPacktranDetails.size() == 0) {
			throw new ServiceException("没有查询到满足条件的补货记录");
		}
		result.setObject(twInvPacktranDetails);
		return result;
	}
}
